package system;

import app.ServerApplication;
import mission.Mission;
import tick.ITick;
import tick.TickManager;
import commu.ICommunication;

public abstract class AbstractSystem implements ITick, ICommunication {

	
	public AbstractSystem()
	{
		TickManager.getInstance().enroll(this);
		ServerApplication.systems.put(serverId(), this);
	}
	
	/**
	 * 初始化函数
	 * 各个系统自己执行
	 * 包括读取配置
	 * 整理数据等
	 * @return
	 * 返回true  初始化成功
	 * 返回false 初始化不成功    整个游戏服务器将不能启动
	 */
	public abstract boolean init();
	
	/**
	 * 系统ID  唯一标示
	 * @return
	 */
	public abstract int serverId();
	
	/**
	 * 处理客户端的请求
	 * @param mon
	 */
	public abstract void handleMission(Mission mon);
	
	@Override
	public void onCommunication(String key, Object value) 
	{
		
	}

	@Override
	public void extuce(int time) 
	{

	}

}
